SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE Procedure [dbo].[SP_TCMOVI_CAJA_I02]
/*-------------------------------------------------------*/    
/*---Empresa              : OFISIS S.A.                --*/    
/*---Cliente              : CASSIMELLI                 --*/    
/*---Sistema              : Presupuesto                --*/    
/*---M«dulo               : Empresa                    --*/    
/*---Programa             : Grabaci«n Cabecera         --*/    
/*---                       Movimiento Caja(Ingresos)  --*/    
/*---Script               : tcmovi_c.sql               --*/    
/*---Nombre SP            : SP_TCMOVI_CAJA_I02         --*/    
/*---Desarrollado por     : Javier Flores A.           --*/    
/*---Fecha Creaci«n       : 08/07/1999                 --*/    
/*---Base Datos           : Microsoft Sql Server       --*/    
/*---Versi«n              : 7.0                        --*/    
/*---Invoca a SP          :                            --*/    
/*-------------------------------------------------------*/    
/*-------------------------------------------------------*/    
/*---Modificado 1 por     :  Carlos R Marquez E        --*/    
/*---Fecha Modificacion   :  29/05/2001                --*/     
/*---Detalle Modificacion :  Considerac Docs en Cartera--*/    
/*-------------------------------------------------------*/    
/*-------------------------------------------------------*/      
/*---ModIficado 2 por     :Maribel Julca Rodriguez     --*/      
/*---Fecha ModIficaci,n   :22/01/2005                  --*/       
/*---Detalle ModIficaci,n :ingreso de campos CO_USUA_CREA, CO_USUA_MODI --*/      
/*-------------------------------------------------------*/      
/*-------------------------------------------------------*/      
/*---Modificado 3 por     :  Carlos R Marquez E        --*/    
/*---Fecha ModIficacion   :  04/07/2007                --*/       
/*---Detalle Modificacion :  Graba Tipo de Cambio Exterior--*/      
/*-------------------------------------------------------*/      
/*-------------------------------------------------------*/    
/*---Comentarios                                       --*/    
/*---                                                  --*/    
/*---                                                  --*/    
/*-------------------------------------------------------*/    
/*-------------------------------------------------------*/    
/*---Drop Proc SP_TCMOVI_CAJA_I02                      --*/    
/*---Grant Execute on SP_TCMOVI_CAJA_I02 to public     --*/     
/*---SP_TCMOVI_CAJA_I02_DENIS                          --*/    
/*-------------------------------------------------------*/    
 @ISCO_EMPR		TD_VC_002,     
 @ISCO_USUA_MODI  TD_VC_008_USUA,    
 @ISCO_CAJA		TD_VC_008,     
 @ISAA_CAJA		TD_VC_004,     
 @ISMM_CAJA		TD_VC_002,     
 @ISTI_MOVI		TD_VC_001,      
 @ISNU_COMP_CAJA  TD_VC_008,     
 @IDFE_OPER		TD_DT_001,     
 @ISCO_TIPO_OPER  TD_VC_003,     
 @ISCO_SUBR		TD_VC_003,     
 @INFA_TIPO_CAMB  TD_NU_015_006,     
 @INFA_CAMB_EXTR  TD_NU_015_006,     
 @INIM_MOVI		TD_NU_016_004,     
 @ISTI_ENTI		TD_VC_001,    
 @ISCO_ENTI		TD_VC_020,     
 @ISDE_NOMB_ORDE	TD_VC_100,     
 @ISDE_OBSE		TD_VC_100,     
 @ISTI_CORR_INEG	TD_VC_001,    
 @INUL_CORR_INGR	TD_IN_001,    
 @INUL_CORR_INEG	TD_IN_001,    
 @ISCO_ENTR_REND	TD_VC_004,    
 @ISCO_UNID_CNTB	TD_VC_003,    
 @IDFE_DIFE			TD_DT_001,     
 @ISNU_SOLI			TD_VC_010,    
 @ISST_ASTO_RESU	TD_VC_001,
 @ISTI_DOCU_ENRE	TD_VC_003,
 @ISNU_DOCU_ENRE	TD_VC_020
As
Declare     
   @VNCO_NUEV_NUME TD_IN_001,     
   @VSCO_NUEV_CHAR TD_VC_008,    
   @VNNU_REGI      TD_IN_001,    
   @VSTI_SITU     TD_VC_003,     
   @VSST_AUXI_0004 TD_VC_001,      
   @VSST_AUXI_0002 TD_VC_001,    
   @VSST_INTE_BACH TD_VC_001,    
   @VSTI_OPNI_CARG TD_VC_003,    
   @VSTI_OPNI_ABON TD_VC_003    
    
Begin Tran SP_TCMOVI_CAJA_I02
    
	/** inserta en la cabecera de caja **/    
	
	Select @VSST_INTE_BACH = ST_INTE_BACH, @VSTI_OPNI_CARG = CO_TIPO_OPEG, @VSTI_OPNI_ABON = CO_TIPO_OPER    
	From TMPARA_TESO Where CO_EMPR = @ISCO_EMPR    
	
	
	If Rtrim(@ISCO_ENTR_REND) = ''    
		Select @ISCO_ENTR_REND = NULL    
	
	
	/***---Obtiene Flags para el Tipo de Operacion  ---***/     
	Select  @VSST_AUXI_0004 = IsNull (ST_AUXI_0004,'N'),    
	@VSST_AUXI_0002 = ST_AUXI_0002    
	From    TTTIPO_OPER    
	Where   CO_EMPR = @ISCO_EMPR    
	And CO_TIPO_OPER = @ISCO_TIPO_OPER    
	
	/***---Seteo TI_SITU  en base al Flag del Tipo de Operacion  ---***/     
	Select @VSTI_SITU = ( SubString ('CAR', 1, PatIndex ('S',@VSST_AUXI_0004)*3) + SubString ('ACT', 1, PatIndex 
('N',@VSST_AUXI_0004)*3) )    
    
	/*Busco el ultimo correlativo usado para insertar el nro de comprobante*/     
	If @VSST_INTE_BACH = 'N' AND @ISST_ASTO_RESU = 'N' AND     
		@ISCO_TIPO_OPER != @VSTI_OPNI_CARG AND @ISCO_TIPO_OPER != @VSTI_OPNI_ABON    
	
	Exec SP_TTULTI_ASTO_Q01 @ISCO_EMPR, @ISCO_USUA_MODI, @ISCO_UNID_CNTB, @ISCO_TIPO_OPER, @IDFE_OPER, @ISNU_COMP_CAJA 
OUTPUT    
	
	Else    
	Begin    
		Select @VNNU_REGI = Count(*)     
		From TCMOVI_CAJA    
		Where CO_EMPR = @ISCO_EMPR     
		And CO_CAJA = @ISCO_CAJA    
		And AA_CAJA = @ISAA_CAJA    
		And MM_CAJA = @ISMM_CAJA    
		And TI_MOVI = 'I'      
		And NU_COMP_CAJA = @ISNU_COMP_CAJA    
		
		If @VNNU_REGI > 0 OR RTRIM(ISNULL(@ISNU_COMP_CAJA, '')) = ''    
		Begin             
			Select  @VSCO_NUEV_CHAR = ISNULL(MAX(NU_COMP_CAJA), '0')     
			From    TCMOVI_CAJA    
			Where   CO_EMPR = @ISCO_EMPR     
			And CO_CAJA = @ISCO_CAJA    
			And AA_CAJA = @ISAA_CAJA    
			And MM_CAJA = @ISMM_CAJA     
			And TI_MOVI = 'I'      
			And NU_COMP_CAJA LIKE '000%'    
			
			Select @VNCO_NUEV_NUME = Convert(Int , @VSCO_NUEV_CHAR) + 1    
			
			Select @VSCO_NUEV_CHAR = Convert(Char(8) , @VNCO_NUEV_NUME)    
			
			-- RELLENA DE CEROS HASTA 8 CARACTERES     
			Select @VSCO_NUEV_CHAR = ISNULL(REPLICATE('0',8- DATALENGTH(LTRIM(RTRIM(@VSCO_NUEV_CHAR)))),'') 
+LTRIM(RTRIM(@VSCO_NUEV_CHAR))    
			
			Select @ISNU_COMP_CAJA = @VSCO_NUEV_CHAR     
		End    
	
	End    
	
	Insert Into TCMOVI_CAJA(     
	CO_EMPR, CO_CAJA, AA_CAJA, MM_CAJA, TI_MOVI, NU_COMP_CAJA, FE_OPER,     
	CO_TIPO_OPER, CO_SUBR, FA_TIPO_CAMB, FA_CAMB_EXTR, IM_MOVI,  TI_ENTI, CO_ENTI,  DE_ENTI,     
	DE_OBSE, ST_CONT, NU_PROC, TI_SITU, CO_ENTR_REND, CO_USUA_CREA, FE_USUA_CREA,   
	CO_USUA_MODI, FE_USUA_MODI, CO_UNID_CONC, FE_DIFE, NU_SOLI, TI_DOCU_ENRE, NU_DOCU_ENRE )    
	Values (     
	@ISCO_EMPR, @ISCO_CAJA, @ISAA_CAJA, @ISMM_CAJA, @ISTI_MOVI, @ISNU_COMP_CAJA,     
	@IDFE_OPER, @ISCO_TIPO_OPER, @ISCO_SUBR, @INFA_TIPO_CAMB, @INFA_CAMB_EXTR, @INIM_MOVI, @ISTI_ENTI,     
	@ISCO_ENTI, @ISDE_NOMB_ORDE, @ISDE_OBSE, 'N', NULL, @VSTI_SITU, @ISCO_ENTR_REND,    
	@ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE(), @ISCO_UNID_CNTB, @IDFE_DIFE, @ISNU_SOLI,
	@ISTI_DOCU_ENRE, @ISNU_DOCU_ENRE )    
	
	If @@error <> 0    
	Begin    
		Rollback Tran SP_TCMOVI_CAJA_I02
		Return    
	End        
	
	
	/* Actualizando Estado y Fecha Liquidaci½n Solicitud Caja */    
	Update  TMSOLI_CABA     
	Set  TI_SITU = 'LIQ',     
	FE_LIQU = @IDFE_OPER,    
	CO_USUA_MODI = @ISCO_USUA_MODI,     
	FE_USUA_MODI = GETDATE()    
	Where   CO_EMPR = @ISCO_EMPR    
	And NU_SOLI = @ISNU_SOLI    
	
	If @@error <> 0    
	Begin    
		rollback Tran SP_TCMOVI_CAJA_I02
		return    
	End      
	
	
	/* ----------- Actualiza los Correlativos ------------------ */    
	If @VSST_INTE_BACH = 'S' OR @ISST_ASTO_RESU = 'S' OR     
		@ISCO_TIPO_OPER = @VSTI_OPNI_CARG OR @ISCO_TIPO_OPER = @VSTI_OPNI_ABON    
	Begin  
	
	If @ISTI_CORR_INEG = 'N'    
	Begin    
	
		Select  @INUL_CORR_INGR = UL_CORR_INGR    
		From  TMSACA_MENS    
		WHERE  CO_EMPR = @ISCO_EMPR      
		AND CO_CAJA = @ISCO_CAJA    
		AND AA_CAJA = @ISAA_CAJA    
		AND MM_CAJA = @ISMM_CAJA     
	
	
		Update  TMSACA_MENS    
		Set UL_CORR_INGR = @INUL_CORR_INGR + 1, CO_USUA_MODI = @ISCO_USUA_MODI,     
		FE_USUA_MODI = GETDATE()    
		Where   CO_EMPR = @ISCO_EMPR     
		And CO_CAJA = @ISCO_CAJA    
		And AA_CAJA = @ISAA_CAJA     
		And MM_CAJA = @ISMM_CAJA    
	
		If @@error <> 0    
		Begin    
			Rollback Tran SP_TCMOVI_CAJA_I02
			Return    
		End    
		
	End    
	Else    
	Begin    
		
		Select  @INUL_CORR_INEG = UL_CORR_INEG    
		From  TMSACA_MENS    
		WHERE  CO_EMPR = @ISCO_EMPR      
		AND CO_CAJA = @ISCO_CAJA    
		AND AA_CAJA = @ISAA_CAJA    
		AND MM_CAJA = @ISMM_CAJA     
		
	
		Update  TMSACA_MENS    
		Set UL_CORR_INEG = @INUL_CORR_INEG + 1, CO_USUA_MODI = @ISCO_USUA_MODI,     
		FE_USUA_MODI = GETDATE()    
		Where   CO_EMPR = @ISCO_EMPR     
		And CO_CAJA = @ISCO_CAJA    
		And AA_CAJA = @ISAA_CAJA     
		And MM_CAJA = @ISMM_CAJA    
		
		If @@error <> 0    
		Begin    
			Rollback Tran SP_TCMOVI_CAJA_I02
			Return    
		End    
		
	End    

End    
    
Commit Tran SP_TCMOVI_CAJA_I02
    
SELECT @ISNU_COMP_CAJA    
RETURN    
    
/*--------------------------------- Fin ---------------------------------*/


GO
